Skip to main content

Docker Build

docker-build (VMID 112, 10.0.0.12) is the fleet's CI build server: it builds application Docker images and pushes them to the internal registry (currently hosted on the legacy services VM, 10.0.0.2:5000).

Configured by ansible/hetzner-main/setup-docker-build.yml.

What's running

Two independent, self-hosted CI runners on the same box:

  • GitHub Actions runner — a standard self-hosted runner registered against the GitHub org, running as a systemd service. Used by repos still on GitHub-hosted CI/CD.
  • Gitea Actions runner (act_runner) — a second runner (tag gitea-runner), registered against Gitea's internal URL (http://10.0.0.19:3000, the services-staff VM) rather than the public gitea.abair.ie, because Cloudflare terminates act_runner's long-poll connections. Node.js 20.x is installed alongside it for JS-based host actions like actions/checkout@v4.

Both runners authenticate to the internal Docker registry as their own dedicated users (github-runner, gitea-runner), each with their own SSH keypair. A daily cron job (docker system prune -af --filter until=24h) keeps disk usage down.

Adding the Gitea runner to an existing box

The gitea-runner playbook tag is separate from the base setup/update tags — run it with make setup-gitea-runner once you have a Gitea Actions registration token.